package com.lucifer.cloud.boot.blog.chat.service;
import com.lucifer.cloud.boot.blog.chat.service.domain.structured.TopN;
import com.lucifer.cloud.boot.blog.chat.service.response.ConversationVO;
import org.springframework.ai.chat.model.ChatResponse;
import org.springframework.web.multipart.MultipartFile;
import reactor.core.publisher.Flux;

import java.util.List;
import java.util.Map;

public interface ChatService {

    TopN topN(String message, String text);

    String chat(String conversationId,String message);

    String chatV2(String conversationId,String message);

    String chatV3(String conversationId,String message,String chatType,MultipartFile file,String fileUrl);

    Map voice(String username,  String localFilePath);


    String chatV4(String conversationId, String question,String data);

    Flux<ChatResponse> chatV5(String conversationId, String question, String data);


    ConversationVO create();

    ConversationVO createV2(String conversationType,String tableName);

    void edit(String conversationId,String name);

    void editV2(String conversationId,String name);

    void setTableName(String conversationId,String tableName);

    List<ConversationVO> list();

    List<ConversationVO> listV2();

    void delete(String conversationId);

    void deleteV2(String conversationId);

    ConversationVO get(String conversationId);

    ConversationVO getV2(String conversationId);

    String uploadOss(String conversationId, String message, String chatType, MultipartFile file);
}
